package com.jeesite.modules.ch.service;

import com.jeesite.common.entity.Page;
import com.jeesite.common.lang.DateUtils;
import com.jeesite.common.lang.StringUtils;
import com.jeesite.common.service.CrudService;
import com.jeesite.modules.ch.dao.ChJiesuanDao;
import com.jeesite.modules.ch.entity.ChJiesuan;
import com.jeesite.modules.ch.entity.ChLiushui;
import com.jeesite.modules.ch.entity.param.JiesuanStatus;
import com.jeesite.modules.ch.entity.param.LiushuiType;
import com.jeesite.modules.file.utils.FileUploadUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Date;
import java.util.List;

/**
 * 渠道结算Service
 * @author 李寒冰
 * @version 2025-10-11
 */
@Service
public class ChJiesuanService extends CrudService<ChJiesuanDao, ChJiesuan> {

	private final ChLiushuiService chLiushuiService;

	public ChJiesuanService(ChLiushuiService chLiushuiService) {
		this.chLiushuiService = chLiushuiService;
	}

	/**
	 * 获取单条数据
	 * @param chJiesuan
	 * @return
	 */
	@Override
	public ChJiesuan get(ChJiesuan chJiesuan) {
		return super.get(chJiesuan);
	}
	
	/**
	 * 查询分页数据
	 * @param chJiesuan 查询条件
	 * @param chJiesuan page 分页对象
	 * @return
	 */
	@Override
	public Page<ChJiesuan> findPage(ChJiesuan chJiesuan) {
		return super.findPage(chJiesuan);
	}
	
	/**
	 * 查询列表数据
	 * @param chJiesuan
	 * @return
	 */
	@Override
	public List<ChJiesuan> findList(ChJiesuan chJiesuan) {
		return super.findList(chJiesuan);
	}
	
	/**
	 * 保存数据（插入或更新）
	 * @param chJiesuan
	 */
	@Override
	@Transactional
	public void save(ChJiesuan chJiesuan) {
		chJiesuan.setCreateTime(new Date());
		super.save(chJiesuan);
		// 保存上传附件
		FileUploadUtils.saveFileUpload(chJiesuan, chJiesuan.getId(), "chJiesuan_file");
	}

	public void updateJiesuanStatus(ChJiesuan chJiesuan){
		String id = chJiesuan.getId();
		String examineStatus = chJiesuan.getExamineStatus();
		chJiesuan = get(id);
		String examineStatusOld = chJiesuan.getExamineStatus();
		if(examineStatusOld.equals(examineStatus)){
			return;
		}
		//通过
		if(examineStatus.equals(JiesuanStatus.YIDAKUAN.getCode())){
			ChLiushui chLiushui = new ChLiushui();
			chLiushui.setWorkId(id);
			chLiushui.setType(LiushuiType.JIESUAN.getCode());
			chLiushui.setJine(chJiesuan.getJiesuanJine());
			chLiushui.setChannelId(chJiesuan.getChannelId());
			chLiushui.setCreateTime(new Date());
			chLiushuiService.save(chLiushui);
		}
		chJiesuan.setExamineStatus(examineStatus);
		save(chJiesuan);
	}

	public String getCode(){
		String jiesuanCode = "JS-"+ DateUtils.getDate("yyyyMMdd")+"-";
		String code = dao.getCode(jiesuanCode);
		String string = "0001";
		if(StringUtils.isNotEmpty(code)){
			String jiesuanCodeR = code.replaceAll(jiesuanCode, "");
			Integer i = Integer.valueOf(jiesuanCodeR);
			i++;
			String string1 = i.toString();
			for (int j = 0; j < 3; j++) {
				if(string1.length()==4){
					break;
				}
				string1 = "0"+string1;
			}
			string = string1;
		}
		return jiesuanCode+string;
	}
	
	/**
	 * 更新状态
	 * @param chJiesuan
	 */
	@Override
	@Transactional
	public void updateStatus(ChJiesuan chJiesuan) {
		super.updateStatus(chJiesuan);
	}
	
	/**
	 * 删除数据
	 * @param chJiesuan
	 */
	@Override
	@Transactional
	public void delete(ChJiesuan chJiesuan) {
		super.delete(chJiesuan);
	}


	
}